2006-01-04 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkbindings.h (struct _GtkBindingSignal): Revert questionable
+ changes.
+
+ * gtk/gtkbindings.c: Use the slice allocator and allocate signal
+ and arguments in one block.
+
* gtk/gtkuimanager.c (gtk_ui_manager_get_toplevels): Don't return
a list of NULLs. (#325723, Steve Chaplin)
2006-01-04 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkbindings.h (struct _GtkBindingSignal): Revert questionable
+ changes.
+
+ * gtk/gtkbindings.c: Use the slice allocator and allocate signal
+ and arguments in one block.
+
* gtk/gtkuimanager.c (gtk_ui_manager_get_toplevels): Don't return
a list of NULLs. (#325723, Steve Chaplin)
{
GtkBindingSignal *signal;
- signal = (GtkBindingSignal *) g_malloc0 (sizeof (GtkBindingSignal) + (n_args > 0 ? n_args - 1 : 0) * sizeof (GtkBindingArg));
+ signal = (GtkBindingSignal *) g_slice_alloc0 (sizeof (GtkBindingSignal) + n_args * sizeof (GtkBindingArg));
signal->next = NULL;
signal->signal_name = (gchar *)g_intern_string (signal_name);
signal->n_args = n_args;
+ signal->args = (GtkBindingArg *)(signal + 1);
return signal;
}
if (G_TYPE_FUNDAMENTAL (sig->args[i].arg_type) == G_TYPE_STRING)
g_free (sig->args[i].d.string_data);
}
- g_free (sig);
+ g_slice_free1 (sizeof (GtkBindingSignal) + sig->n_args * sizeof (GtkBindingArg), sig);
}
static guint
{
GtkBindingArg *arg;
- arg = g_new0 (GtkBindingArg, 1);
+ arg = g_slice_new0 (GtkBindingArg);
slist = g_slist_prepend (slist, arg);
arg->arg_type = va_arg (args, GtkType);
free_slist = slist;
while (slist)
{
- g_free (slist->data);
+ g_slice_free (GtkBindingArg, slist->data);
slist = slist->next;
}
g_slist_free (free_slist);